/*
 * md5.h
 *
 *  Created on: 2008-11-22
 *      Author: ant
 */

#ifndef TEST_MD5_H_
#define TEST_MD5_H_

#include "toxic.h"
#include <iostream>

using namespace std;
using namespace toxic;

static void PrintMD5(const string& str, MD5& md5) {
	cout << "MD5(\"" << str << "\") = " << md5.toString() << endl;
}

void do_test_md5() {

	cout << "***** md5 *****" << endl;

	MD5 md5;
	md5.update("");
	PrintMD5("", md5);

	md5.update("a");
	PrintMD5("a", md5);

	md5.update("bc");
	PrintMD5("abc", md5);

	md5.update("defghijklmnopqrstuvwxyz");
	PrintMD5("abcdefghijklmnopqrstuvwxyz", md5);

	md5.reset();
	md5.update("message digest");
	PrintMD5("message digest", md5);

	try {
		const char* filename = "E:/download/test.txt";
		md5.reset();
		md5.update(filename, MD5::BINARY);
		PrintMD5(filename, md5);
	}
	catch (const exception& e) {
		cout << e.what() << endl;
	}

	cout << MD5("abc").toString() << endl;
}

#endif /* TEST_MD5_H_ */
